package com.yunke.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;

/**
 * 社群动态实体类
 * 
 * @author yunke
 * @since 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("yunke_community_post")
@Schema(name = "YunkeCommunityPost", description = "社群动态实体")
public class YunkeCommunityPost implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.ASSIGN_ID)
    @Schema(description = "动态ID")
    private Long id;

    @Schema(description = "社群ID")
    private Long communityId;

    @Schema(description = "发布者ID")
    private Long publisherId;

    @Schema(description = "发布者昵称")
    private String publisherName;

    @Schema(description = "发布者头像")
    private String publisherAvatar;

    @Schema(description = "动态类型（1文字 2图片 3视频 4链接 5投票 6活动）")
    private Integer postType;

    @Schema(description = "动态标题")
    private String title;

    @Schema(description = "动态内容")
    private String content;

    @Schema(description = "图片列表（JSON格式）")
    private String images;

    @Schema(description = "视频URL")
    private String videoUrl;

    @Schema(description = "视频封面")
    private String videoCover;

    @Schema(description = "链接URL")
    private String linkUrl;

    @Schema(description = "链接标题")
    private String linkTitle;

    @Schema(description = "链接描述")
    private String linkDesc;

    @Schema(description = "链接图片")
    private String linkImage;

    @Schema(description = "话题标签")
    private String topics;

    @Schema(description = "@用户列表（JSON格式）")
    private String mentionUsers;

    @Schema(description = "位置信息")
    private String location;

    @Schema(description = "是否置顶（0否 1是）")
    private Boolean isTop;

    @Schema(description = "置顶结束时间")
    private Long topEndTime;

    @Schema(description = "是否精华（0否 1是）")
    private Boolean isEssence;

    @Schema(description = "点赞数")
    private Integer likeCount;

    @Schema(description = "评论数")
    private Integer commentCount;

    @Schema(description = "分享数")
    private Integer shareCount;

    @Schema(description = "浏览数")
    private Integer viewCount;

    @Schema(description = "收藏数")
    private Integer collectCount;

    @Schema(description = "热度值")
    private Integer hotScore;

    @Schema(description = "动态状态（0正常 1隐藏 2删除）")
    private Integer postStatus;

    @Schema(description = "审核状态（0待审核 1审核通过 2审核拒绝）")
    private Integer auditStatus;

    @Schema(description = "审核备注")
    private String auditRemark;

    @Schema(description = "审核时间")
    private Long auditTime;

    @Schema(description = "扩展信息（JSON格式）")
    private String extraInfo;

    @Schema(description = "备注")
    private String remark;

    @Schema(description = "状态（0正常 1删除）")
    private Integer status;

    @Schema(description = "创建时间")
    private Long createTime;

    @Schema(description = "更新时间")
    private Long updateTime;
} 